#ifndef QASTANDARDPROPERTYFACTORY_H
#define QASTANDARDPROPERTYFACTORY_H

#include "QtPropertyExplorerLib.h"
#include "QAbstractPropertyFactory.h"

namespace QPE {

class QProperty;

class QPropertyFactoryManager;

//! The standard property factory is able to create all the properties that are included in QtPropertyExplorer
//! by default.
class QTPROPERTYEXPLORER_DLL_EXPORT QStandardPropertyFactory : public QAbstractPropertyFactory
{
public:
	//! Constructor
	QStandardPropertyFactory();

	//! Constructor
	//! \param manager Registers this factory at the manager for all it's types
	QStandardPropertyFactory(QPropertyFactoryManager* manager);

	//! Creates a new property of a certain type and assigns a name and description (otionally)
	//! \param type The type of the property as string
	//! \return Returns the created property or NULL if it couldn't be be created
	virtual QProperty* createProperty(const QString& type, const QString &name);
};

}

#endif
